package cn.xiaopengstack.trigger.api;

import cn.xiaopengstack.trigger.api.dto.*;
import cn.xiaopengstack.types.model.Response;
import com.sun.org.apache.xpath.internal.operations.Bool;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author jiangyangang
 */
public interface IRaffleActivityService {


    /**
     * 活动抽奖
     * @param requestDTO
     * @return
     */
    Response<ActivityDrawResponseDTO> drawActivity(ActivityDrawRequestDTO requestDTO);

    /**
     * 查询活动的列表
     * @param activityId
     * @return
     */
    Response<List<RaffleAwardListResponseDTO>> queryRaffleStrategyAwardList(String userId, Long activityId);

    /**
     * 用户日历签到返现
     * @param userId
     * @return
     */
    Response<List<String>> calendarSignRebate(String userId, Long signTime);

    /**
     * 查询用户账户额度
     * @param requestDTO
     * @return
     */
    Response<UserActivityAccountResponseDTO> queryUserActivityAccount(UserActivityAccountRequestDTO requestDTO);

    /**
     * 查询用户是否已经完成当天的签到
     * @param userId
     * @return
     */
    Response<Boolean> isCalendarSignRebate(String userId);

    /**
     * 查询用户抽奖的进度
     * @param requestDTO
     * @return
     */
    Response<RaffleStrategyRuleWeightResponseDTO> queryRaffleStrategyRuleWeight(RaffleStrategyRuleWeightRequestDTO requestDTO);

    /**
     * 积分兑换SKU
     * @param requestDTO
     * @return
     */
    Response<Boolean> creditPayExchangeSku(SkuProductShopCartRequestDTO requestDTO);

    /**
     * 查询SKU信息
     * @return
     */
    Response<List<SkuProductResponseDTO>> querySkuProductListByActivityId(Long activity);

    /**
     * 查询用户积分值
     *
     * @param userId 用户ID
     * @return 可用积分
     */
    Response<BigDecimal> queryUserCreditAccount(String userId);

}
